package it.patterns.behavioral.strategy;

/**
 * Define a family of algorithms, encapsulate each one, and make them
 * interchangeable. Strategy lets the algorithm vary independently from clients
 * that use it.<br/>
 * 
 * Strategy provides a way to configure a class with one or many behaviors. It
 * avoid exposing complex, algorithm-specific data structures. Moreover, it
 * moves class behavior conditional branches to their own Strategy.<br/>
 * 
 * The Context passes all data required by the algorithm to the Strategy when
 * the algorithm is called. Alternatively, the Context may pass itself as an
 * argument to the Strategy operations. Strategies eliminate conditional
 * statements.
 * 
 * <img src="Strategy.jpg" alt="Pattern Structure"/>
 * 
 * @author Luca D'Onofrio
 * 
 * @category Behavioral Pattern
 * @see "Design Patterns - Element of Reusable Object Oriented Software (Gamma,Helm, Johnson, Vlissides)"
 * 
 * @version 1.0
 * 
 */
public interface Strategy {
	public void printData(int[] arr);
}
